package com.run2code.log.handler;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 自定义函数工厂
 * 关注公众号【奔跑的码畜】，一起进步不迷路
 *
 * @author 第七人格
 * @date 2023/10/13
 */
public class CustomFunctionFactory {

    /**
     * 自定义函数map
     * 项目启动时，将自定义函数注册到map中（因为启动时就添加好了，所以不需要考虑线程安全问题，这里使用HashMap就可以了）
     */
    private static final Map<String, ICustomFunctionService> CUSTOM_FUNCTION_MAP = new HashMap<>();

    public CustomFunctionFactory(List<ICustomFunctionService> customFunctions) {
        for (ICustomFunctionService customFunction : customFunctions) {
            CUSTOM_FUNCTION_MAP.put(customFunction.functionName(), customFunction);
        }
    }

    /**
     * 通过函数名获取对应自定义函数
     *
     * @param functionName 函数名
     * @return 自定义函数
     */
    public ICustomFunctionService getFunction(String functionName) {
        return CUSTOM_FUNCTION_MAP.get(functionName);
    }

}
